home *** CD-ROM | disk | FTP | other *** search
/ START Magazine / START VOL 3 NO 12.st / STYLIST.ARC / STYLIST.LST < prev    next >
Encoding:
File List  |  1989-04-11  |  34.5 KB  |  1,156 lines

  1. '
  2. ' Sound-Aid
  3. ' by Sal Gutierrez
  4. '
  5. ' Copyright 1989 Antic Publishing
  6. '
  7. Desk_color_0=Xbios(7,0,-1)            ! Save Desktop Color Palette
  8. Desk_color_1=Xbios(7,1,-1)
  9. Desk_color_2=Xbios(7,2,-1)
  10. Desk_color_3=Xbios(7,3,-1)
  11. Res%=Xbios(4)
  12. Med%=1
  13. High%=2
  14. If Res%=Med%
  15.   '  Setcolor 0,0,0,6
  16.   '  Setcolor 1,6,6,7
  17.   '  Setcolor 2,6,0,0
  18. Endif
  19. Dim Volume%(3),Ptch%(3),Scale%(3),Dur%(3),S_dur%(5),W_dur%(5),F_len%(5)
  20. Dim T_vol%(3,64),T_pitch%(3,64),T_octave%(3,64),T_sdur%(3,64),Zero_flag%(3)
  21. Dim T_voice%(64),T_env%(64),T_form%(64),T_len%(64),T_wdur%(64),Hear_sound%(3)
  22. Dim Voice%(2),Parameter$(5),Voice_box%(6),Env_box%(3),Flag_dup%(3)
  23. Delay%=4
  24. Y_ticker%=133
  25. X_old_form%=350
  26. Y_old_form%=13
  27. Mode_direct%=1
  28. Mode_all%=2
  29. Mode_rewind%=3
  30. Mode_ff%=4
  31. Adjust_increase%=1
  32. Adjust_decrease%=-1
  33. Rem
  34. Gosub Screen_initialize
  35. Rem
  36. Rem *************************************************************************
  37. Rem
  38. Do
  39.   Rem                                        ! CHECK FF, REW, PLAY STATUS
  40.   If Mode%=Mode_direct% And Flag_sound_change%=1   ! Play Sounds Now
  41.     Gosub Hear_it
  42.     Flag_sound_change%=0
  43.     Goto Check_mouse
  44.   Endif
  45.   If Mode%=Mode_all%                                   ! Play Recorded Tape
  46.     If Rec_counter%>Tape_counter% Or Rec_counter%=63
  47.       J%=Tape_counter%
  48.       For I%=1 To 3
  49.         If T_vol%(I%,J%) Or Zero_flag%(I%)
  50.           Sound I%,T_vol%(I%,J%),T_pitch%(I%,J%),T_octave%(I%,J%),T_sdur%(I%,J%)
  51.           If T_vol%(I%,J%)
  52.             Zero_flag%(I%)=1
  53.           Else
  54.             Zero_flag%(I%)=0
  55.           Endif
  56.         Endif
  57.       Next I%
  58.       If T_voice%(J%)
  59.         Wave T_voice%(J%),T_env%(J%),T_form%(J%),T_len%(J%),T_wdur%(J%)
  60.       Endif
  61.       If Tape_counter%=63
  62.         Gosub Tape_stop
  63.       Else
  64.         Gosub Tape_forward
  65.       Endif
  66.       Goto Check_mouse
  67.     Else
  68.       Gosub Tape_stop
  69.       Goto Check_mouse
  70.     Endif
  71.   Endif
  72.   If Mode%=Mode_ff%                          ! Fast Forward Tape
  73.     If Rec_counter%>Tape_counter% And Tape_counter%<63
  74.       Gosub Tape_forward
  75.     Else
  76.       Gosub Tape_stop
  77.     Endif
  78.     Goto Check_mouse
  79.   Endif
  80.   If Mode%=Mode_rewind%                     ! Rewind Tape
  81.     If Tape_counter%>0
  82.       Gosub Tape_rewind
  83.       Goto Check_mouse
  84.     Else
  85.       Gosub Tape_stop
  86.       Goto Check_mouse
  87.     Endif
  88.   Endif
  89.   Rem ---------------------------------------------------------------------
  90.   Check_mouse:
  91.   Mouse X%,Y%,K%
  92.   Y%=Y%/Res%
  93.   If K%=1
  94.     If (X%>502 And X%<634) And (Y%>108 And Y%<128)      ! QUIT
  95.       Repeat
  96.         Mouse D%,D%,K%
  97.       Until K%=0
  98.       Alert 1,"Do you really want to quit?",1,"Ok|Cancel",D%
  99.       If D%=1
  100.         Sound 0,0,0,0,0
  101.         Sound 1,0,0,0,0
  102.         Sound 3,0,0,0,0
  103.         Wave 0,0
  104.         If Res%=Med%
  105.           Void Xbios(7,0,Desk_color_0)
  106.           Void Xbios(7,1,Desk_color_1)
  107.           Void Xbios(7,2,Desk_color_2)
  108.           Void Xbios(7,3,Desk_color_3)
  109.         Endif
  110.         '        End
  111.         Edit
  112.       Endif
  113.     Endif
  114.     If (X%>90 And X%<323) And (Y%>184 And Y%<196)
  115.       While Mousek<>0
  116.       Wend
  117.       Alert 1,"The Sound Wave Stylist|   by Sal Gutierrez|"+Chr$(189)+" 1989 Antic Publishing",1," Ok ",D%
  118.     Endif
  119.     Rem ********************************************************************
  120.     Rem *                   SOUND COMMAND SECTION                          *
  121.     Rem ********************************************************************
  122.     Rem
  123.     Check_sound:
  124.     If X%>92 And X%<339             ! CHECK IF SOUND 1, 2, OR 3
  125.       '      Graphmode 2
  126.       Deffill 2
  127.       If Y%>12 And Y%<44            ! Sound 1
  128.         Register%=1
  129.         Register_y%=31
  130.         Goto Tone_process_1
  131.       Endif
  132.       If Y%>50 And Y%<82            ! Sound 2
  133.         Register%=2
  134.         Register_y%=69
  135.         Goto Tone_process_1
  136.       Endif
  137.       If Y%>88 And Y%<120           ! Sound 3
  138.         Register%=3
  139.         Register_y%=107
  140.         Goto Tone_process_1
  141.       Else
  142.         Goto Check_wave
  143.       Endif
  144.     Else
  145.       Goto Check_wave
  146.     Endif
  147.     Rem ----------------------------------------------------------------------
  148.     Rem
  149.     Rem                         ! DETERMINE SOUND INCREASE OR DECREASE
  150.     Tone_process_1:
  151.     If (Y%>12 And Y%<23) Or (Y%>50 And Y%<61) Or (Y%>88 And Y%<99)
  152.       Adjust%=Adjust_increase%
  153.       Goto Tone_process_2
  154.     Endif
  155.     If (Y%>33 And Y%<44) Or (Y%>71 And Y%<82) Or (Y%>109 And Y%<120)
  156.       Adjust%=Adjust_decrease%
  157.       Goto Tone_process_2
  158.     Else
  159.       Goto Check_form
  160.     Endif
  161.     Rem ----------------------------------------------------------------------
  162.     Tone_process_2:               ! CHECK AND CHANGE VOLUME
  163.     If X%>92 And X%<160
  164.       If Volume%(Register%)=0 And Adjust%=Adjust_increase%
  165.         Ptch%(Register%)=1
  166.         Scale%(Register%)=1
  167.         Graphmode 1
  168.         Text 185,Register_y%*Res%,"  "
  169.         Text 245,Register_y%*Res%,"  "
  170.         Text 185,Register_y%*Res%,Ptch%(Register%)
  171.         Text 245,Register_y%*Res%,Scale%(Register%)
  172.       Endif
  173.       Add Volume%(Register%),Adjust%
  174.       If Volume%(Register%)<1
  175.         Volume%(Register%)=0
  176.         Ptch%(Register%)=0
  177.         Scale%(Register%)=0
  178.         Dur%(Register%)=0
  179.         Graphmode 1
  180.         Text 185,Register_y%*Res%,"  "
  181.         Text 245,Register_y%*Res%,"  "
  182.         Text 185,Register_y%*Res%,Ptch%(Register%)
  183.         Text 245,Register_y%*Res%,Scale%(Register%)
  184.         For I%=282 To 330 Step 12
  185.           Text I%,Register_y%*Res%,"  "
  186.           Text I%,Register_y%*Res%,"0"
  187.         Next I%
  188.       Endif
  189.       If Volume%(Register%)>15
  190.         Volume%(Register%)=15
  191.       Endif
  192.       Graphmode 1
  193.       Text 123,Register_y%*Res%,"  "
  194.       Text 123,Register_y%*Res%,Volume%(Register%)
  195.       Flag_sound_change%=1
  196.       Pause Delay%
  197.       Goto Check_form
  198.     Endif
  199.     Rem ------------------------------------------------------------------
  200.     If X%>160 And X%<216                          ! CHECK AND CHANGE PITCH
  201.       If Volume%(Register%)
  202.         Add Ptch%(Register%),Adjust%
  203.         If Ptch%(Register%)<1
  204.           Dec Scale%(Register%)
  205.           If Scale%(Register%)<1
  206.             Scale%(Register%)=1
  207.             Ptch%(Register%)=1
  208.           Else
  209.             Ptch%(Register%)=12
  210.           Endif
  211.         Endif
  212.         If Ptch%(Register%)>12
  213.           Inc Scale%(Register%)
  214.           If Scale%(Register%)>8
  215.             Scale%(Register%)=8
  216.             Ptch%(Register%)=12
  217.           Else
  218.             Ptch%(Register%)=1
  219.           Endif
  220.         Endif
  221.         Graphmode 1
  222.         Text 185,Register_y%*Res%,"  "
  223.         Text 245,Register_y%*Res%,"  "
  224.         Text 185,Register_y%*Res%,Ptch%(Register%)
  225.         Text 245,Register_y%*Res%,Scale%(Register%)
  226.       Endif
  227.       Flag_sound_change%=1
  228.       Pause Delay%
  229.       Goto Check_form
  230.     Endif
  231.     Rem ----------------------------------------------------------------------
  232.     If X%>216 And X%<280                          ! CHECK AND CHANGE OCTAVE
  233.       If Volume%(Register%)
  234.         Add Scale%(Register%),Adjust%
  235.         If Scale%(Register%)<1
  236.           Scale%(Register%)=1
  237.         Endif
  238.         If Scale%(Register%)>8
  239.           Scale%(Register%)=8
  240.         Endif
  241.         Graphmode 1
  242.         Text 245,Register_y%*Res%,"  "
  243.         Text 245,Register_y%*Res%,Scale%(Register%)
  244.       Endif
  245.       Flag_sound_change%=1
  246.       Pause Delay%
  247.       Goto Check_form
  248.     Endif
  249.     Rem ----------------------------------------------------------------------
  250.     If X%>280 And X%<339                          ! CHECK AND CHANGE DURATION
  251.       If Volume%(Register%)
  252.         Temp%=Dur%(Register%)
  253.         If X%>280 And X%<292
  254.           Place%=10000
  255.         Endif
  256.         If X%>292 And X%<304
  257.           Place%=1000
  258.         Endif
  259.         If X%>304 And X%<316
  260.           Place%=100
  261.         Endif
  262.         If X%>316 And X%<328
  263.           Place%=10
  264.         Endif
  265.         If X%>328 And X%<339
  266.           Place%=1
  267.         Endif
  268.         Add Temp%,Adjust%*Place%
  269.         If Temp%>=0 And Temp%=<65535
  270.           Dur%(Register%)=Temp%
  271.           Num%=10000
  272.           For I%=1 To 5
  273.             S_dur%(I%)=Int(Temp%/Num%)
  274.             Sub Temp%,S_dur%(I%)*Num%
  275.             Div Num%,10
  276.           Next I%
  277.           Graphmode 1
  278.           Text 282,Register_y%*Res%," "
  279.           Text 294,Register_y%*Res%," "
  280.           Text 306,Register_y%*Res%," "
  281.           Text 318,Register_y%*Res%," "
  282.           Text 330,Register_y%*Res%," "
  283.           Text 282,Register_y%*Res%,S_dur%(1)
  284.           Text 294,Register_y%*Res%,S_dur%(2)
  285.           Text 306,Register_y%*Res%,S_dur%(3)
  286.           Text 318,Register_y%*Res%,S_dur%(4)
  287.           Text 330,Register_y%*Res%,S_dur%(5)
  288.         Endif
  289.       Endif
  290.       Flag_sound_change%=1
  291.       Pause Delay%
  292.       Goto Check_form
  293.     Endif
  294.     Rem **********************************************************************
  295.     Rem *                       WAVE COMMAND PROCESS                         *
  296.     Rem **********************************************************************
  297.     Rem
  298.     Check_wave:                               ! CHECK IF WAVE
  299.     If X%>91 And X%<323                       ! DETERMINE INCREASE/DECREASE
  300.       Graphmode 1
  301.       Deffill 2
  302.       If Y%>149 And Y%<160
  303.         Adjust%=Adjust_increase%
  304.         Goto Noise_process_1
  305.       Endif
  306.       If Y%>170 And Y%<181
  307.         Adjust%=Adjust_decrease%
  308.         Goto Noise_process_1
  309.       Endif
  310.       Goto Check_form
  311.     Else
  312.       Goto Check_form
  313.     Endif
  314.     Rem ----------------------------------------------------------------------
  315.     Noise_process_1:                         ! CHECK AND CHANGE VOICE
  316.     If X%>91 And X%<115
  317.       Temp%=Voice%(0)
  318.       If X%>91 And X%<103
  319.         Place%=10
  320.       Endif
  321.       If X%>103 And X%<115
  322.         Place%=1
  323.       Endif
  324.       Add Temp%,Adjust%*Place%
  325.       If Temp%>=0 And Temp%=<63
  326.         Voice%(0)=Temp%
  327.         Voice%(1)=Int(Voice%(0)/10)
  328.         Voice%(2)=Voice%(0)-Voice%(1)*10
  329.         Graphmode 1
  330.         Text 93,168*Res%," "
  331.         Text 105,168*Res%," "
  332.         Text 93,168*Res%,Voice%(1)
  333.         Text 105,168*Res%,Voice%(2)
  334.         Gosub Set_voice_box
  335.       Endif
  336.       Flag_sound_change%=1
  337.       Pause Delay%
  338.       Goto Check_form
  339.     Endif
  340.     Rem ----------------------------------------------------------------------
  341.     If X%>115 And X%<159                       ! CHECK AND CHANGE ENVELOPE
  342.       Temp%=Envelope%
  343.       Add Temp%,Adjust%
  344.       If Temp%>=0 And Temp%=<7
  345.         Envelope%=Temp%
  346.         Graphmode 1
  347.         Text 133,168*Res%,"  "
  348.         Text 133,168*Res%,Envelope%
  349.         Gosub Set_env_box
  350.       Endif
  351.       Flag_sound_change%=1
  352.       Pause Delay%
  353.       Goto Check_form
  354.     Endif
  355.     Rem ----------------------------------------------------------------------
  356.     If X%>159 And X%<203                       ! CHECK AND CHANGE FORM
  357.       Temp%=Frm%
  358.       Add Temp%,Adjust%
  359.       If Temp%>=0 And Temp%=<15
  360.         Frm%=Temp%
  361.         Graphmode 1
  362.         Text 178,168*Res%,"  "
  363.         Text 178,168*Res%,Frm%
  364.         Gosub Set_form_box
  365.       Endif
  366.       Flag_sound_change%=1
  367.       Pause Delay%
  368.       Goto Check_form
  369.     Endif
  370.     Rem ----------------------------------------------------------------------
  371.     If X%>203 And X%<263                      ! CHECK AND CHANGE LENGTH
  372.       Temp%=F_len%(0)
  373.       If X%>203 And X%<215
  374.         Place%=10000
  375.       Endif
  376.       If X%>215 And X%<227
  377.         Place%=1000
  378.       Endif
  379.       If X%>227 And X%<239
  380.         Place%=100
  381.       Endif
  382.       If X%>239 And X%<251
  383.         Place%=10
  384.       Endif
  385.       If X%>251 And X%<263
  386.         Place%=1
  387.       Endif
  388.       Add Temp%,Adjust%*Place%
  389.       If Temp%>=0 And Temp%=<65535
  390.         F_len%(0)=Temp%
  391.         Num%=10000
  392.         For I%=1 To 5
  393.           F_len%(I%)=Int(Temp%/Num%)
  394.           Sub Temp%,F_len%(I%)*Num%
  395.           Div Num%,10
  396.         Next I%
  397.         Graphmode 1
  398.         Text 205,168*Res%," "
  399.         Text 217,168*Res%," "
  400.         Text 229,168*Res%," "
  401.         Text 241,168*Res%," "
  402.         Text 253,168*Res%," "
  403.         Text 205,168*Res%,F_len%(1)
  404.         Text 217,168*Res%,F_len%(2)
  405.         Text 229,168*Res%,F_len%(3)
  406.         Text 241,168*Res%,F_len%(4)
  407.         Text 253,168*Res%,F_len%(5)
  408.       Endif
  409.       Flag_sound_change%=1
  410.       Pause Delay%
  411.       Goto Check_form
  412.     Endif
  413.     Rem ----------------------------------------------------------------------
  414.     If X%>263 And X%<323                  ! CHECK AND CHANGE WAVE DURATION
  415.       Temp%=W_dur%(0)
  416.       If X%>263 And X%<275
  417.         Place%=10000
  418.       Endif
  419.       If X%>275 And X%<287
  420.         Place%=1000
  421.       Endif
  422.       If X%>287 And X%<299
  423.         Place%=100
  424.       Endif
  425.       If X%>299 And X%<311
  426.         Place%=10
  427.       Endif
  428.       If X%>311 And X%<323
  429.         Place%=1
  430.       Endif
  431.       Add Temp%,Adjust%*Place%
  432.       If Temp%>=0 And Temp%=<65535
  433.         W_dur%(0)=Temp%
  434.         Num%=10000
  435.         For I%=1 To 5
  436.           W_dur%(I%)=Int(Temp%/Num%)
  437.           Sub Temp%,W_dur%(I%)*Num%
  438.           Div Num%,10
  439.         Next I%
  440.         Graphmode 1
  441.         Text 265,168*Res%," "
  442.         Text 277,168*Res%," "
  443.         Text 289,168*Res%," "
  444.         Text 301,168*Res%," "
  445.         Text 313,168*Res%," "
  446.         Text 265,168*Res%,W_dur%(1)
  447.         Text 277,168*Res%,W_dur%(2)
  448.         Text 289,168*Res%,W_dur%(3)
  449.         Text 301,168*Res%,W_dur%(4)
  450.         Text 313,168*Res%,W_dur%(5)
  451.       Endif
  452.       Flag_sound_change%=1
  453.       Pause Delay%
  454.       Goto Check_form
  455.     Endif
  456.     Rem **********************************************************************
  457.     Rem *           FORM, VOICE, & ENVELOPE INFO PROCESSING SECTION          *
  458.     Rem **********************************************************************
  459.     Rem
  460.     Check_form:
  461.     Graphmode 3
  462.     If (X%>350 And X%<634) And (Y%>13 And Y%<63)      ! CHECK FORM CHOICES
  463.       If X%>350 And X%<492
  464.         Number_choice%=0
  465.         X_new_form%=350
  466.       Else
  467.         Number_choice%=11
  468.         X_new_form%=492
  469.       Endif
  470.       For Y_new_form%=23 To 63 Step 10
  471.         If Y%<Y_new_form%
  472.           Graphmode 3
  473.           Pbox X_old_form%,Y_old_form%*Res%,X_old_form%+142,(Y_old_form%+10)*Res%
  474.           Pbox X_new_form%,(Y_new_form%-10)*Res%,X_new_form%+142,Y_new_form%*Res%
  475.           X_old_form%=X_new_form%
  476.           Y_old_form%=Y_new_form%-10
  477.           Frm%=Number_choice%
  478.           Graphmode 1
  479.           Text 178,168*Res%,"  "
  480.           Text 178,168*Res%,Frm%
  481.           Y_new_form%=63
  482.         Endif
  483.         If Number_choice%=0 Or Number_choice%=4
  484.           Add Number_choice%,3
  485.         Endif
  486.         Inc Number_choice%
  487.       Next Y_new_form%
  488.       Repeat
  489.         K%=Mousek
  490.       Until K%=0
  491.       Flag_sound_change%=1
  492.       Goto Process_done
  493.     Endif
  494.     Rem ----------------------------------------------------------------------
  495.     If (X%>350 And X%<495) And (Y%>79 And Y%<127)     ! CHECK VOICE CHOICES
  496.       Number_choice%=1
  497.       I%=1
  498.       For Y_new_voice%=87 To 127 Step 8
  499.         If Y%<Y_new_voice%
  500.           Voice_box%(I%)=Voice_box%(I%) Xor 1
  501.           Graphmode 3
  502.           Pbox 350,(Y_new_voice%-8)*Res%,495,Y_new_voice%*Res%
  503.           Voice%(0)=Voice%(0) Xor Number_choice%
  504.           Voice%(1)=Int(Voice%(0)/10)
  505.           Voice%(2)=Voice%(0)-Int(Voice%(0)/10)*10
  506.           Graphmode 1
  507.           Text 93,168*Res%,Voice%(1)
  508.           Text 105,168*Res%,Voice%(2)
  509.           Y_new_voice%=127
  510.         Endif
  511.         Mul Number_choice%,2
  512.         Inc I%
  513.       Next Y_new_voice%
  514.       Repeat
  515.         K%=Mousek
  516.       Until K%=0
  517.       Flag_sound_change%=1
  518.       Goto Process_done
  519.     Endif
  520.     Rem ----------------------------------------------------------------------
  521.     If (X%>502 And X%<634) And (Y%>79 And Y%<103)     ! CHECK ENV CHOICES
  522.       Number_choice%=1
  523.       I%=1
  524.       For Y_new_env%=87 To 103 Step 8
  525.         If Y%<Y_new_env%
  526.           Env_box%(I%)=Env_box%(I%) Xor 1
  527.           Graphmode 3
  528.           Pbox 502,(Y_new_env%-8)*Res%,634,Y_new_env%*Res%
  529.           Envelope%=Envelope% Xor Number_choice%
  530.           Graphmode 1
  531.           Text 133,168*Res%,Envelope%
  532.           Y_new_env%=103
  533.         Endif
  534.         Mul Number_choice%,2
  535.         Inc I%
  536.       Next Y_new_env%
  537.       Repeat
  538.         K%=Mousek
  539.       Until K%=0
  540.       Flag_sound_change%=1
  541.       Goto Process_done
  542.     Endif
  543.     Rem **********************************************************************
  544.     Rem *                     PLAYER PROCESSING SECTION                      *
  545.     Rem **********************************************************************
  546.     Rem
  547.     Check_player:                            ! CHECK FF AND REWIND STATUS
  548.     Graphmode 3
  549.     If X%>448 And X%<536                     ! CHECK PLAY BUTTONS
  550.       If Y%>144 And Y%<156                   ! Direct Play
  551.         Mode%=Mode_direct%
  552.         Gosub Toggle_buttons(449,145,535,155)
  553.       Endif
  554.       If Y%>156 And Y%<168 And Mode%=0      ! Current Play
  555.         Gosub Toggle_buttons(449,157,535,167)
  556.         Gosub Hear_it
  557.         Graphmode 3
  558.         Pbox 449,157*Res%,535,167*Res%
  559.         Toggle_flag%=0
  560.       Endif
  561.       If Y%>168 And Y%<180                  ! All Play
  562.         If Tape_counter%<Rec_counter%
  563.           Mode%=Mode_all%
  564.           Gosub Toggle_buttons(449,169,535,179)
  565.           For I%=1 To 3
  566.             Zero_flag%(I%)=0
  567.           Next I%
  568.           Goto Process_done
  569.         Endif
  570.       Endif
  571.     Endif
  572.     Rem -----------------------------------------------------------------------
  573.     If X%>377 And X%<607                    ! CHECK MOVEMENT BUTTONS
  574.       If Y%>180 And Y%<192 And Mode%        ! stop Tape
  575.         Gosub Tape_stop
  576.         Goto Process_done
  577.       Endif
  578.       If X%>377 And X%<448                 ! Rewind Tape
  579.         If Y%>168 And Y%<180 And Mode%=0
  580.           If Tape_counter%>0
  581.             Gosub Toggle_buttons(378,169,447,179)
  582.             Mode%=Mode_rewind%
  583.             Goto Process_done
  584.           Endif
  585.         Endif
  586.       Endif
  587.       If X%>536 And X%<607                 ! Fast Forward Tape
  588.         If Y%>168 And Y%<180 And Mode%=0
  589.           If Rec_counter%>0
  590.             Gosub Toggle_buttons(537,169,606,179)
  591.             Mode%=Mode_ff%
  592.             Goto Process_done
  593.           Endif
  594.         Endif
  595.       Endif
  596.     Endif
  597.     Rem ----------------------------------------------------------------------
  598.     If Y%>150 And Y%<162                     ! CHECK REC AND ERASE BUTTONS
  599.       If X%>392 And X%<432 And Tape_counter%<64   ! Record Button
  600.         Deffill 3
  601.         Pbox 393,151*Res%,431,161*Res% ! Highlight Rec button
  602.         For I%=1 To 3
  603.           T_vol%(I%,Tape_counter%)=Volume%(I%)
  604.           T_pitch%(I%,Tape_counter%)=Ptch%(I%)
  605.           T_octave%(I%,Tape_counter%)=Scale%(I%)
  606.           T_sdur%(I%,Tape_counter%)=Dur%(I%)
  607.         Next I%
  608.         T_voice%(Tape_counter%)=Voice%(0)
  609.         T_env%(Tape_counter%)=Envelope%
  610.         T_form%(Tape_counter%)=Frm%
  611.         T_len%(Tape_counter%)=F_len%(0)
  612.         T_wdur%(Tape_counter%)=W_dur%(0)
  613.         Repeat
  614.           K%=Mousek
  615.           If K%=3
  616.             Flag_carry_over%=1
  617.           Endif
  618.         Until K%=0
  619.         Deffill 1
  620.         Pbox 393,151*Res%,431,161*Res% ! Dehighlight button
  621.         If Rec_counter%=Tape_counter% And Rec_counter%<63
  622.           Inc Rec_counter%
  623.         Endif
  624.         Gosub Tape_forward
  625.         Goto Process_done
  626.       Endif
  627.       If X%>552 And X%<592 And Rec_counter%  ! Erase Button
  628.         Repeat
  629.           Mouse D%,D%,K%
  630.         Until K%=0
  631.         Deffill 3
  632.         Pbox 553,151*Res%,591,161*Res%
  633.         Mode%=Mode_erase%
  634.         Alert 1,"|This Will Erase To|The End Of Tape!",1,"Erase|Abort",Button%
  635.         If Button%=1
  636.           Gosub Tape_erase
  637.           Rec_counter%=Tape_counter%
  638.         Endif
  639.         Deffill 1
  640.         Pbox 553,151*Res%,591,161*Res%
  641.         Goto Process_done
  642.       Endif
  643.     Endif
  644.     Rem ----------------------------------------------------------------------
  645.     If Y%>144 And Y%<192                     ! CHECK LOAD AND SAVE
  646.       If X%>350 And X%<374                   ! Load Recorded Tape
  647.         Fileselect "\*.LST","",File$
  648.         If File$=""
  649.           Goto Process_done
  650.         Endif
  651.         On Error Gosub Eof_error
  652.         Rec_counter%=0
  653.         For I%=0 To 3
  654.           Flag_dup%(I%)=0
  655.         Next I%
  656.         Tape_counter%=0
  657.         Gosub Tape_erase
  658.         File$=File$+".LST"
  659.         Open "I",#1,File$
  660.         Repeat
  661.           Inc Rec_counter%
  662.           Input #1,Parameter$(0)
  663.           If Left$(Parameter$(0),5)="Sound"
  664.             If Flag_dup%(0)=1
  665.               For C%=0 To 3
  666.                 Flag_dup%(C%)=0
  667.               Next C%
  668.               Inc Rec_counter%
  669.             Endif
  670.             I%=Val(Right$(Parameter$(0),1))
  671.             For S%=1 To 3
  672.               If I%=S%
  673.                 If Flag_dup%(S%)=1
  674.                   For C%=0 To 3
  675.                     Flag_dup%(C%)=0
  676.                   Next C%
  677.                 Else
  678.                   Dec Rec_counter%
  679.                 Endif
  680.                 Flag_dup%(S%)=1
  681.                 S%=3
  682.               Endif
  683.             Next S%
  684.             Input #1,Parameter$(1)
  685.             Input #1,Parameter$(2)
  686.             Input #1,Parameter$(3)
  687.             Input #1,Parameter$(4)
  688.             T_vol%(I%,Rec_counter%)=Val(Parameter$(1))
  689.             T_pitch%(I%,Rec_counter%)=Val(Parameter$(2))
  690.             T_octave%(I%,Rec_counter%)=Val(Parameter$(3))
  691.             T_sdur%(I%,Rec_counter%)=Val(Parameter$(4))
  692.             Goto Tape_still_loading
  693.           Endif
  694.           If Left$(Parameter$(0),4)="Wave"
  695.             If Flag_dup%(0)=1
  696.               For C%=1 To 3
  697.                 Flag_dup%(C%)=0
  698.               Next C%
  699.             Else
  700.               Dec Rec_counter%
  701.             Endif
  702.             Flag_dup%(0)=1
  703.             Input #1,Parameter$(1)
  704.             Input #1,Parameter$(2)
  705.             Input #1,Parameter$(3)
  706.             Input #1,Parameter$(4)
  707.             T_voice%(Rec_counter%)=Val(Right$(Parameter$(0),2))
  708.             T_env%(Rec_counter%)=Val(Parameter$(1))
  709.             T_form%(Rec_counter%)=Val(Parameter$(2))
  710.             T_len%(Rec_counter%)=Val(Parameter$(3))
  711.             T_wdur%(Rec_counter%)=Val(Parameter$(4))
  712.             Goto Tape_still_loading
  713.           Endif
  714.           Tape_still_loading:
  715.         Until Eof(#1)
  716.         Tape_loaded:
  717.         Close
  718.         If Rec_counter%>63
  719.           Rec_counter%=63
  720.         Endif
  721.         Gosub Reset_tape_parameters
  722.         Goto Process_done
  723.       Endif
  724.       If X%>610 And X%<634                   ! Save Recorded Tape
  725.         Fileselect "\*.LST","",File$
  726.         If File$=""
  727.           Goto Process_done
  728.         Endif
  729.         File$=File$+".LST"
  730.         Open "O",#1,File$
  731.         For I%=1 To 3
  732.           Zero_flag%(I%)=0
  733.         Next I%
  734.         For I%=0 To Rec_counter%
  735.           For J%=1 To 3
  736.             If T_vol%(J%,I%) Or Zero_flag%(J%)
  737.               Print #1,"Sound ";J%;",";T_vol%(J%,I%);",";T_pitch%(J%,I%);
  738.               Print #1,",";T_octave%(J%,I%);",";T_sdur%(J%,I%)
  739.               If T_vol%(J%,I%)
  740.                 Zero_flag%(J%)=1
  741.               Else
  742.                 Zero_flag%(J%)=0
  743.               Endif
  744.             Endif
  745.           Next J%
  746.           If T_voice%(I%)
  747.             Print #1,"Wave ";T_voice%(I%);",";T_env%(I%);",";T_form%(I%);
  748.             Print #1,",";T_len%(I%);",";T_wdur%(I%)
  749.           Endif
  750.         Next I%
  751.         Print #1,"Sound 1,0,0,0,0"
  752.         Print #1,"Sound 2,0,0,0,0"
  753.         Print #1,"Sound 3,0,0,0,0"
  754.         Print #1,"Wave 0,0,0,0,0"
  755.         Close
  756.         Goto Process_done
  757.       Endif
  758.     Endif
  759.     Rem ----------------------------------------------------------------------
  760.   Endif
  761.   Process_done:
  762. Loop
  763. Rem ************************************************************************
  764. Rem *                           SUBROUTINES                                *
  765. Rem ************************************************************************
  766. Rem
  767. Procedure Eof_error
  768.   If Err=26
  769.     Resume Tape_loaded
  770.   Else
  771.     Error Err
  772.     End
  773.   Endif
  774. Return
  775. Procedure Toggle_buttons(X1_new%,Y1_new%,X2_new%,Y2_new%)
  776.   Graphmode 3
  777.   If Toggle_flag%
  778.     Pbox X1_box%,Y1_box%*Res%,X2_box%,Y2_box%*Res%
  779.   Endif
  780.   X1_box%=X1_new%
  781.   Y1_box%=Y1_new%
  782.   X2_box%=X2_new%
  783.   Y2_box%=Y2_new%
  784.   Pbox X1_box%,Y1_box%*Res%,X2_box%,Y2_box%*Res%
  785.   Toggle_flag%=1
  786. Return
  787. Rem --------------------------------------------------------------------------
  788. Procedure Tape_erase
  789.   For I%=Tape_counter% To 64
  790.     For J%=1 To 3
  791.       T_vol%(J%,I%)=0
  792.       T_pitch%(J%,I%)=0
  793.       T_octave%(J%,I%)=0
  794.       T_sdur%(J%,I%)=0
  795.     Next J%
  796.     T_voice%(I%)=0
  797.     T_env%(I%)=0
  798.     T_form%(I%)=0
  799.     T_len%(I%)=0
  800.     T_wdur%(I%)=0
  801.   Next I%
  802. Return
  803. Rem --------------------------------------------------------------------------
  804. Procedure Tape_stop
  805.   Sound 1,0,0,0,0
  806.   Sound 2,0,0,0,0
  807.   Sound 3,0,0,0,0
  808.   Wave 0,0
  809.   Gosub Toggle_buttons(378,181,606,191)
  810.   Repeat
  811.     K%=Mousek
  812.   Until K%=0
  813.   Deffill 2
  814.   Pbox X1_box%,Y1_box%*Res%,X2_box%,Y2_box%*Res%
  815.   Toggle_flag%=0
  816.   If Mode%<>Mode_direct%
  817.     For I%=1 To 3
  818.       Volume%(I%)=T_vol%(I%,Tape_counter%)
  819.       Ptch%(I%)=T_pitch%(I%,Tape_counter%)
  820.       Scale%(I%)=T_octave%(I%,Tape_counter%)
  821.       Dur%(I%)=T_sdur%(I%,Tape_counter%)
  822.     Next I%
  823.     Voice%(0)=T_voice%(Tape_counter%)
  824.     Envelope%=T_env%(Tape_counter%)
  825.     Frm%=T_form%(Tape_counter%)
  826.     F_len%=T_len%(Tape_counter%)
  827.     W_dur%(0)=T_wdur%(Tape_counter%)
  828.   Endif
  829.   Mode%=0
  830.   Flag_sound_change%=1
  831. Return
  832. Rem -------------------------------------------------------------------------
  833. Procedure Reset_tape_parameters
  834.   Graphmode 1
  835.   Deffill 2,2,8
  836.   For I%=1 To 2
  837.     Pbox 350,132*Res%,606,142*Res%
  838.     Pbox 610,132*Res%,634,142*Res%
  839.     Deffill 1,0,0
  840.   Next I%
  841.   '
  842.   For I%=354 To 602 Step 4
  843.     Line I%,132*Res%,I%,142*Res%
  844.   Next I%
  845.   Graphmode 1
  846.   Text 612,140*Res%,"0"
  847.   Text 624,140*Res%,"0"
  848.   Line 622,132*Res%,622,142*Res%
  849.   Tape_counter%=0
  850.   X_ticker%=351
  851.   Deffill 1,2,8
  852.   Gosub Tape_update
  853. Return
  854. Rem -------------------------------------------------------------------------
  855. Procedure Tape_rewind
  856.   Dec Tape_counter%
  857.   Deffill 2
  858.   Graphmode 3
  859.   Gosub Tape_update
  860.   Sub X_ticker%,4
  861. Return
  862. Rem --------------------------------------------------------------------------
  863. Procedure Tape_forward
  864.   If Tape_counter%<63
  865.     Inc Tape_counter%
  866.     Add X_ticker%,4
  867.     Deffill 3
  868.     Graphmode 3
  869.     Gosub Tape_update
  870.   Endif
  871. Return
  872. Rem -------------------------------------------------------------------------
  873. Procedure Tape_update
  874.   Pbox X_ticker%-1,132*Res%,X_ticker%+3,142*Res%
  875.   Line X_ticker%-1,132*Res%,X_ticker%-1,142*Res%
  876.   '
  877.   Graphmode 1
  878.   Text 612,140*Res%," "
  879.   Text 624,140*Res%," "
  880.   Text 612,140*Res%,Int(Tape_counter%/10)
  881.   Text 624,140*Res%,Tape_counter%-Int(Tape_counter%/10)*10
  882.   J%=0
  883.   If Flag_carry_over%=0
  884.     For I%=1 To 3
  885.       Volume%(I%)=T_vol%(I%,Tape_counter%)
  886.       Text 123,(31+J%)*Res%,"  "
  887.       Text 123,(31+J%)*Res%,Volume%(I%)
  888.       Ptch%(I%)=T_pitch%(I%,Tape_counter%)
  889.       Text 185,(31+J%)*Res%,"  "
  890.       Text 185,(31+J%)*Res%,Ptch%(I%)
  891.       Scale%(I%)=T_octave%(I%,Tape_counter%)
  892.       Text 245,(31+J%)*Res%,"  "
  893.       Text 245,(31+J%)*Res%,Scale%(I%)
  894.       Dur%(I%)=T_sdur%(I%,Tape_counter%)
  895.       Temp%=Dur%(I%)
  896.       Num%=10000
  897.       For K%=0 To 4
  898.         Text 282+K%*12,(31+J%)*Res%," "
  899.         Text 282+K%*12,(31+J%)*Res%,Int(Temp%/Num%)
  900.         Sub Temp%,Int(Temp%/Num%)*Num%
  901.         Div Num%,10
  902.       Next K%
  903.       Add J%,38
  904.     Next I%
  905.     Voice%(0)=T_voice%(Tape_counter%)
  906.     Temp%=T_voice%(Tape_counter%)
  907.     Num%=10
  908.     For K%=0 To 1
  909.       Text 93+K%*12,168*Res%," "
  910.       Text 93+K%*12,168*Res%,Int(Temp%/Num%)
  911.       Sub Temp%,Int(Temp%/Num%)*Num%
  912.       Div Num%,10
  913.     Next K%
  914.     Envelope%=T_env%(Tape_counter%)
  915.     Text 133,168*Res%,"  "
  916.     Text 133,168*Res%,Envelope%
  917.     Frm%=T_form%(Tape_counter%)
  918.     Text 178,168*Res%,"  "
  919.     Text 178,168*Res%,Frm%
  920.     F_len%(0)=T_len%(Tape_counter%)
  921.     Temp%=T_len%(Tape_counter%)
  922.     Num%=10000
  923.     For K%=0 To 4
  924.       Text 205+K%*12,168*Res%," "
  925.       Text 205+K%*12,168*Res%,Int(Temp%/Num%)
  926.       Sub Temp%,Int(Temp%/Num%)*Num%
  927.       Div Num%,10
  928.     Next K%
  929.     W_dur%(0)=T_wdur%(Tape_counter%)
  930.     Temp%=T_wdur%(Tape_counter%)
  931.     Num%=10000
  932.     For K%=0 To 4
  933.       Text 265+K%*12,168*Res%," "
  934.       Text 265+K%*12,168*Res%,Int(Temp%/Num%)
  935.       Sub Temp%,Int(Temp%/Num%)*Num%
  936.       Div Num%,10
  937.     Next K%
  938.     Gosub Set_voice_box
  939.     Gosub Set_env_box
  940.     Gosub Set_form_box
  941.   Endif
  942.   Flag_carry_over%=0
  943. Return
  944. Rem ----------------------------------------------------------------------
  945. Procedure Hear_it
  946.   Hear_start:
  947.   For I%=1 To 3
  948.     If Mode%=Mode_direct%
  949.       Dur_sound%=0
  950.     Else
  951.       Dur_sound%=Dur%(I%)
  952.     Endif
  953.     If Volume%(I%)
  954.       Sound I%,Volume%(I%),Ptch%(I%),Scale%(I%),Dur_sound%
  955.       Hear_sound%(I%)=1
  956.     Else
  957.       If Hear_sound%(I%)=1
  958.         Sound I%,0,0,0,0
  959.         Hear_sound%=0
  960.       Endif
  961.     Endif
  962.   Next I%
  963.   If Mode%=Mode_direct%
  964.     Dur_wave%=0
  965.   Else
  966.     Dur_wave%=W_dur%(0)
  967.   Endif
  968.   If Voice%(0)
  969.     Wave Voice%(0),Envelope%,Frm%,F_len%(0),Dur_wave%
  970.     Hear_wave%=1
  971.   Else
  972.     If Hear_wave%=1
  973.       Wave 0,0
  974.       Hear_wave%=0
  975.       Goto Hear_start
  976.     Endif
  977.   Endif
  978.   If Mode%<>Mode_direct%
  979.     Sound 1,0,0,0,0
  980.     Sound 2,0,0,0,0
  981.     Sound 3,0,0,0,0
  982.     Wave 0,0
  983.   Endif
  984. Return
  985. Rem -------------------------------------------------------------------------
  986. Procedure Set_voice_box
  987.   Graphmode 3
  988.   Num%=1
  989.   For I%=1 To 6
  990.     If (Voice%(0) And Num%) And Voice_box%(I%)=0
  991.       Pbox 350,(71+I%*8)*Res%,495,(79+I%*8)*Res%
  992.       Voice_box%(I%)=1
  993.       Goto Check_voice
  994.     Endif
  995.     If (Voice%(0) And Num%)=0 And Voice_box%(I%)
  996.       Pbox 350,(71+I%*8)*Res%,495,(79+I%*8)*Res%
  997.       Voice_box%(I%)=0
  998.     Endif
  999.     Check_voice:
  1000.     Mul Num%,2
  1001.   Next I%
  1002. Return
  1003. Rem -------------------------------------------------------------------------
  1004. Procedure Set_env_box
  1005.   Graphmode 3
  1006.   Num%=1
  1007.   For I%=1 To 3
  1008.     If (Envelope% And Num%) And Env_box%(I%)=0
  1009.       Pbox 502,(71+I%*8)*Res%,634,(79+I%*8)*Res%
  1010.       Env_box%(I%)=1
  1011.       Goto Check_env
  1012.     Endif
  1013.     If (Envelope% And Num%)=0 And Env_box%(I%)
  1014.       Pbox 502,(71+I%*8)*Res%,634,(79+I%*8)*Res%
  1015.       Env_box%(I%)=0
  1016.     Endif
  1017.     Check_env:
  1018.     Mul Num%,2
  1019.   Next I%
  1020. Return
  1021. Rem -------------------------------------------------------------------------
  1022. Procedure Set_form_box
  1023.   Graphmode 3
  1024.   If Frm%<11
  1025.     X_new_form%=350
  1026.     I%=0
  1027.   Else
  1028.     X_new_form%=492
  1029.     I%=11
  1030.   Endif
  1031.   For Y_new_form%=13 To 53 Step 10
  1032.     Srch_frm:
  1033.     If Frm%=I%
  1034.       Pbox X_old_form%,Y_old_form%*Res%,X_old_form%+142,(Y_old_form%+10)*Res%
  1035.       Pbox X_new_form%,Y_new_form%*Res%,X_new_form%+142,(Y_new_form%+10)*Res%
  1036.       X_old_form%=X_new_form%
  1037.       Y_old_form%=Y_new_form%
  1038.       Y_new_form%=63
  1039.     Endif
  1040.     If I%<3 Or (I%>3 And I%<7)
  1041.       Inc I%
  1042.       Goto Srch_frm
  1043.     Endif
  1044.     Inc I%
  1045.   Next Y_new_form%
  1046. Return
  1047. Rem --------------------------------------------------------------------------
  1048. Procedure Screen_initialize
  1049.   Deftext 1,0,0,6
  1050.   For I%=1 To 35
  1051.     Read X1%,Y1%,X2%,Y2%
  1052.     Y1%=Y1%*Res%
  1053.     Y2%=Y2%*Res%
  1054.     If I%<27
  1055.       Deffill 2,2,8
  1056.       Pbox X1%,Y1%,X2%,Y2%
  1057.       Deffill 1,0,0
  1058.     Else
  1059.       Deffill 1,2,8
  1060.     Endif
  1061.     Pbox X1%,Y1%,X2%,Y2%
  1062.   Next I%
  1063.   For I%=1 To 22
  1064.     Read X%,Y1%,Y2%
  1065.     Y1%=Y1%*Res%
  1066.     Y2%=Y2%*Res%
  1067.     Line X%,Y1%,X%,Y2%
  1068.   Next I%
  1069.   For I%=1 To 22
  1070.     Read X%,Y%
  1071.     Text X%,Y%*Res%,Chr$(1)
  1072.     Text X%,(Y%+21)*Res%,Chr$(2)
  1073.   Next I%
  1074.   Get 0,12*Res%,339,44*Res%,Plate$
  1075.   Put 0,50*Res%,Plate$
  1076.   Put 0,88*Res%,Plate$
  1077.   For I%=1 To 19
  1078.     Read X1%,Y1%,X2%,Y2%
  1079.     Y1%=Y1%*Res%
  1080.     Y2%=Y2%*Res%
  1081.     Line X1%,Y1%,X2%,Y2%
  1082.   Next I%
  1083.   For X%=393 To 475 Step 13
  1084.     Line X%,35*Res%,X%+13,41*Res%
  1085.     Line X%+13,35*Res%,X%+13,41*Res%
  1086.   Next X%
  1087.   For X%=393 To 449 Step 26
  1088.     Line X%,55*Res%,X%+13,61*Res%
  1089.     Line X%+13,61*Res%,X%+26,55*Res%
  1090.   Next X%
  1091.   For X%=535 To 625 Step 13
  1092.     Line X%,31*Res%,X%+13,25*Res%
  1093.     Line X%+13,25*Res%,X%+13,31*Res%
  1094.   Next X%
  1095.   For X%=535 To 591 Step 26
  1096.     Line X%,51*Res%,X%+13,45*Res%
  1097.     Line X%+13,45*Res%,X%+26,51*Res%
  1098.   Next X%
  1099.   For Y%=23 To 53 Step 10
  1100.     Line 350,Y%*Res%,634,Y%*Res%
  1101.   Next Y%
  1102.   For I%=1 To 41
  1103.     Read X%,Y%,A$
  1104.     Text X%,Y%*Res%,A$
  1105.   Next I%
  1106.   '
  1107.   Box 91,185*Res%,323,195*Res%
  1108.   Text 110,192*Res%,"About Sound Wave Stylist"
  1109.   Get 487,171*Res%,498,177*Res%,Arrow$
  1110.   Put 456,147*Res%,Arrow$
  1111.   Put 456,159*Res%,Arrow$
  1112.   Put 560,171*Res%,Arrow$
  1113.   Put 572,171*Res%,Arrow$
  1114.   Get 400,171*Res%,411,177*Res%,Arrow$
  1115.   Put 412,171*Res%,Arrow$
  1116.   Gosub Reset_tape_parameters
  1117.   Graphmode 3
  1118.   Pbox 350,13*Res%,492,23*Res%
  1119. Return
  1120. Rem ------------------------------------------------------------------------
  1121. Data 28,0,339,10,92,12,339,23,28,23,339,33,92,33,339,44,91,137,323,147,91,149
  1122. Data 323,160,45,160,323,170,91,170,323,181,350,0,634,13,350,13,492,63,492,13
  1123. Data 634,63,350,65,495,78,350,78,495,128,502,65,634,78,502,78,634,105,502,108
  1124. Data 634,128,448,144,536,156,448,156,536,168,448,168,536,180,377,168,448,180
  1125. Data 536,168,607,180,377,180,607,192,392,150,432,162,552,150,592,162,350,144
  1126. Data 374,192,610,144,634,192
  1127. Data 470,185,514,187,487,171,489,177,490,172,492,176,493,173,495,175,496,174
  1128. Data 498,174,400,174,402,174,403,173,405,175,406,172,408,176,409,171,411,177
  1129. Rem
  1130. Data 92,12,43,160,12,43,216,12,43,280,12,43,292,12,43
  1131. Data 304,12,43,316,12,43,328,12,43,91,149,181,103,149,181,115,149,181,159,149
  1132. Data 181,203,149,181,215,149,181,227,149,181,239,149,181,251,149,181,263,149
  1133. Data 181,275,149,181,287,149,181,299,149,181,311,149,181
  1134. Rem
  1135. Data 123,20,185,20,245,20,282,20,294,20,306,20,318,20,330,20,93,157,105,157
  1136. Data 133,157,178,157,205,157,217,157,229,157,241,157,253,157,265,157,277,157
  1137. Data 289,157,301,157,313,157
  1138. Rem
  1139. Data 393,15,406,21,406,21,488,21,393,31,406,25,406,25,406,31,406,31,488,31,393
  1140. Data 45,406,51,406,51,488,51,471,55,484,61,535,15,548,21,548,15,548,21,548,15
  1141. Data 630,15,535,41,548,35,548,35,630,35,613,51,626,45,535,61,548,55,548,55,548
  1142. Data 61,548,61,630,61,389,13,389,63,531,13,531,63
  1143. Rem
  1144. Data 32,31,"Sound 1",32,69,"Sound 2",32,107,"Sound 3",52,168,"Wave"
  1145. Data 40,8,"Voice   Volume  Pitch  Octave   Dur"
  1146. Data 93,145,"Voc Env  Form   Len    Dur",476,9,"FORM"
  1147. Data 358,21,"0-3",508,21,"11",358,31,"4-7",508,31,"12",358,41,"  8"
  1148. Data 508,41,"13",358,51,"  9",508,51,"14",358,61," 10",508,61,"15"
  1149. Data 375,74,"VOICE (Active)",367,86,"1 = Channel 1",367,94,"2 = Channel 2"
  1150. Data 367,102,"4 = Channel 3",367,110,"8 = Noise On 1",359,118,"16 = Noise On 2"
  1151. Data 359,126,"32 = Noise On 3",537,74,"ENVELOPE",517,86,"1 = Channel 1"
  1152. Data 517,94,"2 = Channel 2",517,102,"4 = Channel 3",552,121,"QUIT"
  1153. Data 400,159,"REC",560,159,"ERA",472,153,"Direct",472,165,"Current"
  1154. Data 358,159,"L",358,167,"O",358,175,"A",358,183,"D",618,159,"S",618,167,"A"
  1155. Data 618,175,"V",618,183,"E"
  1156.